#include "../include/head.h"

//得到一行中'='符号后面的字符串
static void set_arg(char *buf, char *arg)
{
    // 将指针偏移到字符'='
    char *ptr = strchr(buf, '=');
    if (NULL == ptr) {
        fprintf(stderr, "client.conf is error!\n");
        exit(-1);
    }
    
    // ptr目前指向'=',后移一位指向等号后面的空格,后移两位指向待取字符串  
    strcpy(arg, ptr + 2); 
}

// 从配置文件中获取参数
void conf_get(char *conf, char *ip, char *port)
{
    FILE *fp = fopen(conf, "r"); // 打开配置文件
    ERROR_CHECK(fp, NULL, "fopen");
    char buf[128] = ""; // 初始化缓冲区

    // 得到ip
    fgets(buf, sizeof(buf), fp); // 通过fgets读取一行到buf中,fgets会将换行符也读取到缓冲区中
    buf[strlen(buf) - 1] = '\0'; // 将行尾的换行符替换为'\0',确保buf是是一个标准的字符串
    set_arg(buf, ip);

    // 得到port
    memset(buf, 0, sizeof(buf)); // 清空缓冲区
    fgets(buf, sizeof(buf), fp);
    buf[strlen(buf) - 1] = '\0';
    set_arg(buf, port);

    fclose(fp);
}

